14a7bfa3c9333472d623f9f27132c0cdad45a934,src/java/org/orbeon/oxf/xforms/control/controls/XFormsSelectControl.java,XFormsSelectControl,storeExternalValue,#PipelineContext#String#String#,49
Before Change
if (!itemWasSelected && itemIsSelected)
selectEvents.add(new XFormsSelectEvent(this, currentItemValue));
else if (itemWasSelected && !itemIsSelected)
containingDocument.dispatchEvent(pipelineContext, new XFormsDeselectEvent(this, currentItemValue));
}
if (selectEvents.size() > 0) {
// Select events must be sent after all xforms-deselect events
After Change
// Iterate over all the items
final List selectEvents = new ArrayList();
final List deselectEvents = new ArrayList();
for (Iterator i = items.iterator(); i.hasNext();) {
final XFormsItemUtils.Item currentItem = (XFormsItemUtils.Item) i.next();
final String currentItemValue = currentItem.getValue();
final boolean itemWasSelected = instanceValues.get(currentItemValue) != null;
final boolean itemIsSelected;
if (uiValues.get(currentItemValue) != null) {
// Value is currently selected in the UI
instanceValues.put(currentItemValue, "");
itemIsSelected = true;
} else {
// Value is currently NOT selected in the UI
instanceValues.remove(currentItemValue);
itemIsSelected = false;
}
// Handle xforms-select / xforms-deselect
// TODO: Dispatch to itemset or item once we support doing that
if (!itemWasSelected && itemIsSelected) {
selectEvents.add(new XFormsSelectEvent(this, currentItemValue));
} else if (itemWasSelected && !itemIsSelected) {
deselectEvents.add(new XFormsDeselectEvent(this, currentItemValue));
}
}
// Dispatch xforms-deselect events
if (deselectEvents.size() > 0) {
for (Iterator i = deselectEvents.iterator(); i.hasNext();) {
containingDocument.dispatchEvent(pipelineContext, (XFormsEvent) i.next());
}
}
// Select events must be sent after all xforms-deselect events